package es.deusto.ingenieria.is.tsp.formulation.heuristics;

import es.deusto.ingenieria.is.search.algorithms.Node;
import es.deusto.ingenieria.is.search.algorithms.heuristic.EvaluationFunction;
import es.deusto.ingenieria.is.search.tsp.formulation.EnvironmentMap;

/**	Clase que representa la funcion de evaluacion en linea recta, la cual va a determinar el resultado a partir de un estado.
 * @author Inigo y Kevin
 *
 */
public class DistanciaEvaluationFunction extends EvaluationFunction{

	
	/* (non-Javadoc) Este metodo calcula el coste acumulado , en nuetro caso retornamos 0.
	 * @see es.deusto.ingenieria.is.search.algorithms.heuristic.EvaluationFunction#calculateG(es.deusto.ingenieria.is.search.algorithms.Node)
	 */
	@Override
	public double calculateG(Node arg0) {
		// TODO Auto-generated method stub
		return 0;
		//EnvironmentMap environment = (EnvironmentMap) arg0.getState();
		//return environment.getCosteAnterior();
	}

	/* (non-Javadoc) Calcula de forma estimada cual va a ser la mejor resultado sin resolver el problema. Para ello utilizamos una
	 * heur�stica: Ciudad de menor distancia en linea recta hasta la ciudad final.
	 * @see es.deusto.ingenieria.is.search.algorithms.heuristic.EvaluationFunction#calculateH(es.deusto.ingenieria.is.search.algorithms.Node)
	 */
	@Override
	public double calculateH(Node arg0) {
		//La heur�stica
		EnvironmentMap environment = (EnvironmentMap) arg0.getState();
		//return environment.getCiudadMenorCoste();
		return environment.getEnLineaRecta();
	}

}
